#pragma once

#include <memory>
#include <netinet/in.h>
#include <string>

namespace CG
{
class NetEndPoint
{
  public:
    NetEndPoint();
    NetEndPoint(int port);
    NetEndPoint(std::string ip, int port);
    NetEndPoint(sockaddr_in sockaddr);
    bool operator<(const NetEndPoint &p) const;
    sockaddr_in Addr() const { return addr; }
    std::string IP() const;
    int Port() const;
    bool IsValid() const;
    bool IsAnyAddr() const;

  private:
    sockaddr_in addr;
};
} // namespace CG